package com.shenzw.mybatisdemo.aop;

import com.shenzw.mybatisdemo.config.ParamConstraintValidation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

/**
 * 通过自定义注解参数 ➕ParamConstraintValidation配置类 限定字段取值
 *
 * @author shenzw
 * @date 2023/12/8
 */
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME) // 注解保留在程序允许期间，可通过反射获取类上所有注解
@Documented
@Constraint(validatedBy = ParamConstraintValidation.class)
public @interface CheckParam {
    /**
     * 参数允许的值
     *
     * @return String[]
     */
    String[] paramAllowValues();

    /**
     * 异常提示信息
     *
     * @return String
     */
    String message() default "参数值不合法，请检查";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}
